package com.butang.code.weeklyMatch;

/**
 * ClassName: LeetCode100264
 * Package: com.butang.code.weeklyMatch
 * Description:
 *
 * 返回数组 nums 中 严格递增 或 严格递减 的最长非空子数组的长度。
 *
 *
 *
 * 示例 1：
 *
 * 输入：nums = [1,4,3,3,2]
 *
 * 输出：2
 *
 * 解释：
 *
 * nums 中严格递增的子数组有[1]、[2]、[3]、[3]、[4] 以及 [1,4] 。
 *
 * nums 中严格递减的子数组有[1]、[2]、[3]、[3]、[4]、[3,2] 以及 [4,3] 。
 *
 * 因此，返回 2 。
 *
 * 示例 2：
 *
 * 输入：nums = [3,3,3,3]
 *
 * 输出：1
 *
 * 解释：
 *
 * nums 中严格递增的子数组有 [3]、[3]、[3] 以及 [3] 。
 *
 * nums 中严格递减的子数组有 [3]、[3]、[3] 以及 [3] 。
 *
 * 因此，返回 1 。
 *
 * 示例 3：
 *
 * 输入：nums = [3,2,1]
 *
 * 输出：3
 *
 * 解释：
 *
 * nums 中严格递增的子数组有 [3]、[2] 以及 [1] 。
 *
 * nums 中严格递减的子数组有 [3]、[2]、[1]、[3,2]、[2,1] 以及 [3,2,1] 。
 *
 * 因此，返回 3 。
 *
 *
 *
 * 提示：
 *
 * 1 <= nums.length <= 50
 * 1 <= nums[i] <= 50
 *
 * @Author BuTang
 * @Create 2024/4/7 10:38
 * @Version 1.0
 */
public class LeetCode100264 {
    public static void main(String[] args) {
        int[] nums = new int[]{1,4,3,3,2};
        int[] nums1 = new int[]{3,3,3,3};
        int[] nums2 = new int[]{3,2,1};
        int i = longestMonotonicSubarray(nums2);
        System.out.println(i);
    }
    public static int longestMonotonicSubarray(int[] nums) {
        int maxLen = 1;
        if (nums != null && nums.length ==1){
            return maxLen;
        }
        // 逻辑：从左到右边，如果一直是增加则加入数组，一旦不是递增就停止。递减的逻辑也是一样。
        int num = nums[0] , addLen = 1 ,reduceLen = 1;

        for (int i : nums) {
            if (i > num){
                reduceLen = 1;
                addLen ++ ;
                num = i;
                maxLen = addLen > maxLen ? addLen : maxLen;
            }else if ( i < num) {
                addLen = 1;
                reduceLen++;
                num = i;
                maxLen = reduceLen > maxLen ? reduceLen : maxLen;
            }else {
                addLen = 1;
                reduceLen = 1;
            }
        }
        return maxLen;

    }
}
